package com.tedu.api.list;

import org.junit.Test;

import java.awt.*;
import java.util.ArrayList;
import java.util.Collection;

/**
 * 存放相同的数据---->给我立刻想到数组数组数组
 * 数组定义:int[] i=new int[10];   定长
 * 需求:存898个元素,不限制任意类型【基本数据类型|引用类型】
 * 集合解决上述问题
 * 集合:存不确定的元素数,存任意类型【限定类型】【重点】
 * 屈从于:java.util
 * Collection  顶级容器开始了解  接口
 * 作用:集合中提供了所有容器的通用方法，维护元素，操作元素！
 *
 * Collection 顶级接口---创建对象,两个常用子接口：
 * List集合【接口】： 可重复集合，并且有序【存储的特点】
 *    List子接口下:ArrayList   数组集合
 * Set集合【接口】：不可重复集合【存储的特点】==
 *
 * 创建顶级集合对象---多态---接口   引用=new   子接口【实现类】();
 *
 */
public class CollectionAPI {
    /**
     * Collection 对象方法
     * add()方法    返回值：boolean
     * 语法：add(任何类型元素)
     * 作用：向当前集合添加给定元素，可以为任何类型
     *      如果元素存入成功，返回ture，失败返回false
     * size()方法    返回值：int
     * 作用：返回集合个数---【数组length：返回数组长度】
     * isEmpty()方法   返回值：boolean
     * 作用：判断元素是否为空，返回集合元素有值【不是空】，返回值false
     *                             没有值【是空的】，返回值true
     * clear()方法       返回值：void  【空】
     * 作用：清空集合元素
     */
    @Test
    public void testCollection(){
        //创建【容器】顶级集合：不定长，无限存【集合尽量存相同数据】
        Collection c=new ArrayList();//java.util那个
        c.add("one");
        c.add("2");
        c.add(new Frame());
        c.add(true);
        c.add('1');
        c.add(1.4);
        System.out.println("打印容器【顶级集合】:"+c);
        System.out.println("打印集合个数："+c.size());
        c.clear();  //清空元素
        boolean b=c.isEmpty();
        System.out.println("集合中是否存在元素："+b);







    }

    /**
     * remove()    返回值:boolean
     * 作用：从集合中删除给定元素，如果删除元素重复，只删除匹配第一元素数据
     *      底层：使用equals方法判断删除元素
     */
     @Test
    public void testRemove(){
         Collection c=new ArrayList();
         c.add("2");c.add("3");c.add("d");
         c.add("3");c.add("4");c.add("5");
         System.out.println("🐓合元素效果"+c);
         c.remove("3");
         System.out.println("删除🐓后效果"+c);


     }

    /**
     * addAll(Collection c)方法   返回值：boolean
     * 作用：将给定集合中所有的元素添加到另一个集合中，当添加完毕后
     *      返回值true
     */
    @Test
    public void testAddAll(){
        //创建第一个集合
        Collection c1=new ArrayList();
        c1.add("web");c1.add("java");c1.add("c");
        //创建第二个集合
        Collection c2=new ArrayList();
        c2.add("go");c2.add("php");c2.add("net");
        //并集  c1集合元素添加到c2集合元素中
        boolean b=c1.addAll(c2);
        System.out.println("并集是否成功："+b);
        System.out.println("并集结果："+c1);

    }


    /**
     * containsAll()    返回值:boolean
     * 作用：判断当前集合是否包含给定集合中的所有元素
     * 判断：两个集合所有的元素是否一致[存入顺序无关]
     *      ture 两个集合元素【完全一致】
     *      false 两个集合元素【可能有部分不一致】
     *
     */
    @Test
    public void testContainsAll(){
        Collection c1=new ArrayList();//判断是否
        c1.add("go");c1.add("java");
        Collection c2=new ArrayList();//包含
        c2.add("java");c2.add("g0");
        //判断：c1集合是否包含c2集合【集合存入元素顺序不一致】
        boolean b=c1.containsAll(c2);
        System.out.println("c1集合是否包含c2集合元素:"+b);


    }

    /**
     * removeAll    返回值：boolean
     * 作用：删除当前集合当中与给定集合中共有元素【交集】
     */
     @Test
    public void testRemoveAll(){
         Collection c1=new ArrayList();
         c1.add("1");c1.add("2");c1.add("3");
         Collection c2=new ArrayList();
         c2.add("2");c2.add("1");c2.add("4");
         boolean b=c1.removeAll(c2);//c1交c2  同消除
         System.out.println("交集是否成功："+b);//true
         System.out.println("交集后的结果："+c1);///123   3

     }

}
